
BASEDIR = $(HOME)/libcscript
SRC_DIR = $(BASEDIR)/src
OBJ_DIR = $(BASEDIR)/unix/obj
EXE_DIR = $(BASEDIR)/bin
EXE_OUT = $(EXE_DIR)/libcscript
DLL_OUT = $(EXE_DIR)/libcscript.so

TEST_SRC_DIR = $(BASEDIR)/test
TEST_OBJ_DIR = $(BASEDIR)/unix/obj
TEST_EXE_DIR = $(BASEDIR)/bin
TEST_EXE_OUT = $(EXE_DIR)/libcstest

COMPILE = gcc
CFLAGS  = -m32 -fPIC 
IFLAGS  = -I$(BASEDIR)/src
LFLAGS  = -L$(BAEEDIR)/bin -lm

OBJS := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(wildcard $(SRC_DIR)/*.c) )
TESTOBJS := $(patsubst $(TEST_SRC_DIR)/%.c, $(TEST_OBJ_DIR)/%.o, $(wildcard $(TEST_SRC_DIR)/*.c) )

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	$(COMPILE) -c $(CFLAGS) $(IFLAGS) $< -o $@

$(TEST_OBJ_DIR)/%.o: $(TEST_SRC_DIR)/%.c
	$(COMPILE) -c $(CFLAGS) $(IFLAGS) $< -o $@
	
all : $(EXE_OUT) $(DLL_OUT) $(TEST_EXE_OUT) 

$(EXE_OUT) : $(OBJS)
	$(COMPILE) $(CFLAGS) $(OBJS) -o $@ $(LFLAGS) 

$(DLL_OUT) : $(OBJS)
	$(COMPILE) -shared -fPIC $(CFLAGS) $(OBJS) -o $@ $(LFLAGS) 
	
$(TEST_EXE_OUT) : $(TESTOBJS)
	$(COMPILE) $(CFLAGS) $(TESTOBJS) -o $@ $(LFLAGS) $(EXE_DIR)/libcscript.so

clean:
	@rm -f $(OBJS) 
	@rm -f $(TESTOBJS) 
	@rm -f $(EXE_DIR)/*
	
distclean: clean
